.TH EFIDP_MAKE_GENERIC 3 "Mon 11 May 2015"
.SH NAME
efidp_make_generic, efidp_make_end_instance, efidp_make_end_entire,
efidp_make_vendor, efidp_make_file, efidp_make_hd, efidp_make_nvme,
efidp_make_sas, efidp_make_ipv4, efidp_make_mac_addr, efidp_make_sata,
efidp_make_scsi, efidp_make_acpi_hid, efidp_make_acpi_hid_ex, efidp_make_edd10,
efidp_make_pci, efidp_make_hw_vendor, efidp_make_msg_vendor, efidp_make_media_vendor \-
Create EFI Device Path node data structures for specific device types

efidp_set_node_data, efidp_duplicate_path, efidp_append_path, efidp_append_node,
efidp_append_instance \-
Manipulate EFI Device Path and node relationships.

efidp_is_valid, efidp_instance_size, efidp_size, efidp_get_next_end,
efidp_is_multiinstance, efidp_next_instance, efidp_next_node, efidp_node_size,
efidp_type, efidp_subtype \-
Inspect EFI Device Path data structures

efidp_parse_device_node, efidp_parse_device_path \-
Create EFI Device Path structures from printable strings.

efidp_format_device_path \-
Format EFI Device Path structures as printable strings.

.SH SYNOPSIS
.nf
.B #include <efivar.h>
.sp
\fBssize_t \fRefidp_make_generic\fB(\kZuint8_t *\fIbuf\fP, ssize_t \fIsize\fB,
.ta \nZu
	uint8_t \fItype\fB, uint8_t \fIsubtype\fB,
	ssize_t \fItotal_size\fB);\fR

\fBssize_t \fRefidp_make_end_instance\fB(uint8_t *\fIbuf\fB, ssize_t \fIsize\fB);\fR

\fBssize_t \fRefidp_make_end_entire\fB(uint8_t *\fIbuf\fB, ssize_t \fIsize\fR\fB);\fR

\fBssize_t \fRefidp_make_vendor\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB, uint8_t \fItype\fB,
.ta \nZu
	uint8_t \fIsubtype\fB, efi_guid_t \fIvendor_guid\fB,
	void *\fIdata\fB, size_t \fIdata_size\fB);\fR

\fBssize_t \fRefidp_make_file\fB(uint8_t *\fIbuf\fB, ssize_t \fIsize\fB, char *\fIfilename\fB);\fR

.ta
\fBssize_t \fRefidp_make_hd\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB, uint32_t \fInum\fB,
.ta \nZu
	uint64_t \fIpart_start\fB, uint64_t \fIpart_size\fB,
	uint8_t *\fIsignature\fB, uint8_t \fIformat\fB,
	uint8_t \fIsignature_type\fB);\fR

\fBssize_t \fRefidp_make_nvme\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB,
.ta \nZu
	uint32_t \fInamespace_id\fB, uint8_t *\fIieee_eui_64\fB);\fR

\fBssize_t \fRefidp_make_sas\fB(uint8_t *\fIbuf\fB, ssize_t \fIsize\fB, uint64_t \fIsas_address\fB);\fR

\fBssize_t \fRefidp_make_ipv4\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB,
.ta \nZu
	uint32_t \fIlocal\fB, uint32_t \fIremote\fB,
	uint32_t \fIgateway\fB, uint32_t \fInetmask\fB,
	uint16_t \fIlocal_port\fB, uint16_t \fIremote_port\fB,
	uint16_t \fIprotocol\fB, int \fIis_static\fB);\fR

\fBssize_t \fRefidp_make_mac_addr\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB,
.ta \nZu
	uint8_t \fIif_type\fB,
	const uint8_t const *\fImac_addr\fB,
	ssize_t \fImac_addr_size\fB);\fR

\fBssize_t \fRefidp_make_sata\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB, uint16_t \fIhba_port\fB,
.ta \nZu
	uint16_t \fIport_multiplier_port\fB, uint16_t \fIlun\fB);\fR

\fBssize_t \fRefidp_make_scsi\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB, uint16_t \fItarget\fB,
.ta \nZu
	uint16_t \fIlun\fB);\fR

\fBssize_t \fRefidp_make_acpi_hid\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB, uint32_t \fIhid\fB,
.ta \nZu
	uint32_t \fIuid\fB);\fR

\fBssize_t \fRefidp_make_acpi_hid_ex\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB, uint32_t \fIhid\fB,
.ta \nZu
	uint32_t \fIuid\fB, uint32_t \fIcid\fB, char *\fIhidstr\fB,
	char *\fIuidstr\fB, char *\fIcidstr\fB);\fR

\fBssize_t \fRefidp_make_edd10\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB,
.ta \nZu
	uint32_t \fIhardware_device\fB);\fR

\fBssize_t \fRefidp_make_pci\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB, uint8_t \fIdevice\fB,
.ta \nZu
	uint8_t \fIfunction\fR);

\fBssize_t \fRefidp_make_hw_vendor\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB,
.ta \nZu
	efi_guid_t \fIguid\fB, void *\fIdata\fB,
	size_t \fIdata_size\fB);\fR

\fBssize_t \fRefidp_make_msg_vendor\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB,
.ta \nZu
	efi_guid_t \fIguid\fB, void *\fIdata\fB,
	size_t \fIdata_size\fB);\fR

\fBssize_t \fRefidp_make_media_vendor\fB(\kZuint8_t *\fIbuf\fB, ssize_t \fIsize\fB,
.ta \nZu
	efi_guid_t \fIguid\fB, void *\fIdata\fB,
	size_t \fIdata_size\fB);\fR

\fBint \fRefidp_set_node_data\fB(\kZconst_efidp \fIdn\fB, void *\fIbuf\fB, size_t \fIbufsize\fB);

\fBint \fRefidp_duplicate_path\fB(\kZconst_efidp \fIdp\fB, efidp *\fIout\fB);\fR

\fBint \fRefidp_append_path\fB(\kZconst_efidp \fIdp0\fB, const_efidp \fIdp1\fB, efidp *\fIout\fB);

\fBint \fRefidp_append_node\fB(\kZconst_efidp \fIdp\fB, const_efidp \fIdn\fB, efidp *\fIout\fB);\fR

\fBint \fRefidp_append_instance\fB(\kZconst_efidp \fIdp\fB, const_efidp \fIdpi\fB, efidp *\fIout\fB);

\fBint16_t \fRefidp_type\fB(const_efidp \fIdp\fB);\fR

\fBint16_t \fRefidp_subtype\fB(const_efidp \fIdp\fB);\fR

\fBssize_t \fRefidp_node_size\fB(const_efidp \fIdn\fB);\fR

\fBint \fRefidp_next_node\fB(const_efidp \fIin\fB, const_efidp *\fIout\fB);\fR

\fBint \fRefidp_next_instance\fB(const_efidp \fIin\fB, const_efidp *\fIout\fB);\fR

\fBint \fRefidp_is_multiinstance\fB(const_efidp \fIdn\fB);\fR

\fBint \fRefidp_get_next_end\fB(const_efidp \fIin\fB, const_efidp *\fIout\fB);\fR

\fBssize_t \fRefidp_size\fB(const_efidp \fIdp\fB);\fR

\fBssize_t \fRefidp_instance_size\fB(const_efidp \fIdpi\fB);\fR

\fBint \fRefidp_is_valid\fB(const_efidp \fIdp\fB, ssize_t \fIlimit\fB);\fR

\fBssize_t \fRefidp_parse_device_node\fB(char *\fIpath\fB, efidp \fIout\fB, size_t \fIsize\fB);\fR

\fBssize_t \fRefidp_parse_device_path\fB(char *\fIpath\fB, efidp \fIout\fB, size_t \fIsize\fB);\fR

\fBssize_t \fRefidp_format_device_path\fB(\kZchar *\fIbuf\fB, size_t \fIsize\fB,
.ta \nZu
	const_efidp \fIdp\fB, ssize_t \fIlimit\fB);\fR
.fi
.SH AUTHORS
.nf
Peter Jones <pjones@redhat.com>
.fi
